// 1. 当数据变化触发依赖,dep通知所有的Watcher 实例更新视图
// 2. 自身实例化的时候往dep对象中添加自己
class Watcher {
    constructor(vm, key, cb) {
        this.vm = vm;
        // data中的属性名称
        this.key = key;
        // 回调函数, 负责更新视图
        this.cb = cb;
        // 把watcher对象记录到Dep类的静态属性target
        Dep.target = this;
        // 触发get方法,在get方法中会调用addSub
        this.oldValue = this.vm[this.key];
        Dep.target = null;
    }
    // 当数据发生变化的时候更新视图
    update() {
        // 在Observer类中监听了所有数据的变化,所以一旦值改变这里获取到的就是新值
        let newValue = this.vm[this.key];
        if (this.oldValue === newValue) {
            return;
        }
        // 更新视图
        this.cb(newValue);
    }
}
